//
//  main.c
//  Logical operator
//
//  Created by admin on 2019/7/9.
//  Copyright © 2019 猫爷爷的酱醋茶. All rights reserved.
//

#include <stdio.h>

/*
 && 与
 || 或
 !  非
 
 逻辑运算符的优先级： not > and > or
                    ! > && > ||
 当不确定优先级的时候，可以使用小括号改变优先级。
 例：LogicalPriority();
 
 断路问题：
 逻辑表达式，在执行的时候，是先计算左边的条件的结果，再计算右边的条件的结果。
 
 当是&&表达式的时候，如果左边的表达式不成立，这个时候可以确定整个表达式的结果，右边的表达式不执行。例：LogicAnd();
 当是||表达式的时候，如果左边的表达式成立，这个时候可以确定整个表达式的结果，右边的表达式不执行。例：LogicOr();
 
 */

//逻辑与 &&
void LogicAnd(void);
void LogicAnd2(void);
//逻辑或 ||
void LogicOr(void);
void LogicOr2(void);

//逻辑运算符的优先级
void LogicalPriority(void);

//练习题
void Exercise(void);
void Exercise2(void);

int main(int argc, const char * argv[])
{
    
    Exercise2();
    
    return 0;
}

//练习题
void Exercise2(void)
{
    int year = 0;
    printf("请输入你要查询的年份：\n");
    scanf("%d",&year);
    int result = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
    
    if(result == 1)
    {
        printf("%d为闰年\n",year);
    }else{
        printf("%d为平年\n",year);
    }
    
}


//练习题
void Exercise(void)
{
    int ChineseScore = 0;
    int EnglishScore = 0;
    printf("请输入语文成绩和英语成绩，用空格分隔开：");
    scanf("%d%d",&ChineseScore,&EnglishScore);
    
    int reslut = ChineseScore > 90 && EnglishScore > 90;
    int result2 = ChineseScore > 90 || EnglishScore > 90;
    
    if(reslut == 1)
    {
    printf("恭喜你，两门成绩时候都大于90\n");
    }else if(result2 == 1)
    {
    printf("其中有一门成绩时候都大于90\n");
    }
    
    
}

//逻辑运算符的优先级
void LogicalPriority(void)
{
    
    int num1 = 10,num2 = 20;
    int result = num1 > 10 || (num2 < 50 && num2 > !num1);
    printf("result = %d\n",result);
    
}


//逻辑或 ||
void LogicOr2(void)
{
    int i = 1;
    int result = i++ > 2 || ++i < 5;//i = 3;
    printf(" i = %d\n",i);
    printf("result = %d\n",result);
}

//逻辑或 ||
void LogicOr(void)
{
    int i = 1;
    int result = i++ > 0 || ++i < 10;//i = 2;
    printf(" i = %d\n",i);
    printf("result = %d\n",result);
}

//&&逻辑与
void LogicAnd(void)
{
    int i = 1;
    int result = i++ > 10 && ++i < 0;//i = 2;
    printf(" i = %d\n",i);
    printf("result = %d\n",result);
}

//&&逻辑与
void LogicAnd2(void)
{
    int i = 1;
    int result = i++ < 10 && ++i >= 3;//i = 3;
    printf(" i = %d\n",i);
    printf("result = %d\n",result);
}
